package com.zyf.chapter02.behavior.observer.template;

/**
 * 被观察者
 * @author yifeng
 */
public interface Subject {
    /**
     * 注册 该函数名也可以叫做 attach
     * @param observer 观察者
     */
    void registerObserver(Observer observer);

    /**
     * 移除观察者 该函数名也可叫 detach
     * @param observer 观察者
     */
    void removeObserver(Observer observer);

    /**
     * 通知观察者
     * @param message 消息
     */
    void notifyObservers(Message message);
}
